Conventionally, a matrix operation is widely performed in various kinds of processing such as image processing and recognition processing. As apparatuses for performing a matrix operation, there are, for example, a systolic array, a configurable array processor and the like.
The systolic array is a system in which same circuits are regularly arranged so as to perform pipeline processing and parallel processing. The configurable array processor is a processor having multiple nodes and multiple switch units for changing connection among the nodes.
As for the systolic array, however, because the systolic array is configured so that an operation for an input is executed through a predetermined number of cycles and an operation result of each cycle is immediately used in a next cycle as an input, and the operation is repeatedly performed in the whole apparatus, there is a problem that an amount of data transfer until a desired matrix operation result is obtained is large.
As for the configurable array processor, there is a problem that, since a lot of switch circuits for switching a connection state of a wiring network among the nodes are required, circuit scale of the whole apparatus increases.